<?php

	$req =isset( $_POST) ? $_POST : die();


	$top = $req['top'];
	$left = $req['left'];
	$size = $req['size'];
	$imgWidth = $req['imgWidth'];
	$imgHeight = $req['imgHeight'];



$php_path = dirname(__FILE__) . '/';

$php_url = dirname($_SERVER['PHP_SELF']) . '/';



//文件保存目录路径

$save_path = $php_path ;//. './attached/';


//文件保存目录URL

$save_url = $php_url;// . './attached/';


//定义允许上传的文件扩展名

$ext_arr = array(

	'image' => array('gif', 'jpg', 'jpeg', 'png'),

	//'flash' => array('swf', 'flv'),

	//'media' => array('swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'),

	//'file' => array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2'),

);

//最大文件大小

$max_size = 2097152;



$save_path = realpath($save_path) . '/';



//PHP上传失败

if (!empty($_FILES['imgFile']['error'])) {

	switch($_FILES['imgFile']['error']){

		case '1':

			$error = '超过php.ini允许的大小。';

			break;

		case '2':

			$error = '超过表单允许的大小。';

			break;

		case '3':

			$error = '图片只有部分被上传。';

			break;

		case '4':

			$error = '请选择图片。';

			break;

		case '6':

			$error = '找不到临时目录。';

			break;

		case '7':

			$error = '写文件到硬盘出错。';

			break;

		case '8':

			$error = 'File upload stopped by extension。';

			break;

		case '999':

		default:

			$error = '未知错误。';

	}

	alert($error);

}



//有上传文件时

if (empty($_FILES) === false) {

	//原文件名

	$file_name = $_FILES['imgFile']['name'];

	//服务器上临时文件名

	$tmp_name = $_FILES['imgFile']['tmp_name'];

	//文件大小

	$file_size = $_FILES['imgFile']['size'];

	//检查图片真伪

	if(!getimagesize($tmp_name)){

			alert("非法文件。");

			exit;

		}
	//检查文件名

	if (!$file_name) {

		alert("请选择文件。");

	}
	//检查目录

	if (@is_dir($save_path) === false) {

		alert("上传目录不存在。");

	}

	//检查目录写权限

	if (@is_writable($save_path) === false) {

		alert("上传目录没有写权限。");

	}

	//检查是否已上传

	if (@is_uploaded_file($tmp_name) === false) {

		alert("上传失败。");

	}

	//检查文件大小

	if ($file_size > $max_size) {

		alert("上传文件大小超过限制。");

	}

	//检查目录名

	$dir_name = empty($_GET['dir']) ? 'image' : trim($_GET['dir']);

	if (empty($ext_arr[$dir_name])) {

		alert("目录名不正确。");

	}

	//获得文件扩展名

	$temp_arr = explode(".", $file_name);

	$file_ext = array_pop($temp_arr);

	$file_ext = trim($file_ext);

	$file_ext = strtolower($file_ext);

	//检查扩展名

	if (in_array($file_ext, $ext_arr[$dir_name]) === false) {

		alert("上传文件扩展名是不允许的扩展名。\n只允许" . implode(",", $ext_arr[$dir_name]) . "格式。");

	}

	//创建文件夹

	if ($dir_name !== '') {

		$save_path .= $dir_name . "/";

		$save_url .= $dir_name . "/";

		if (!file_exists($save_path)) {

			mkdir($save_path);

		}

	}
	
	$new_file_name = date("YmdHis") . '.' . $file_ext;

	//移动文件

	$file_path = $save_path . $new_file_name;

	if (move_uploaded_file($tmp_name, $file_path) === false) {

		alert("上传文件失败。");

	}

	@chmod($file_path, 0644);

	$file_url = $save_url . $new_file_name;



	//图片裁剪

	$image_info = getimagesize($file_path);
	$image_width = $image_info[0];
	$image_height = $image_info[1];
	$image_type = $image_info['mime'];


	$image_fun = str_replace('/', 'createfrom', $image_type);
	$src_image = $image_fun($file_path);

	$dst_image = imagecreatetruecolor(200,200);

	$src_x = ceil($image_width*$left/$imgWidth);
	$src_y = ceil($image_height*$top/$imgHeight);
	$src_width = ceil($size*$image_height/$imgHeight);

	imagecopyresampled($dst_image, $src_image, 0, 0, $src_x, $src_y, 200, 200, $src_width, $src_width);


	$image_save_fun = str_replace('/', null, $image_type);
	$image_save_fun($dst_image, $file_path);

	imagedestroy($src_image);
	imagedestroy($dst_image);
	//unlink($file_path);
	//echo $file_url;

	header("Content-Type:application/json;charset=utf-8");
	$str = array('sucess' =>$new_file_name);
	$result = json_encode($str);
	echo $result;

}

function alert($msg) {

	header("Content-Type:application/json;charset=utf-8");
	$str = array('error' => $msg);
	$result = json_encode($str);
	echo $result;
	exit;

}

